from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select
import time
import configparser


# 函数主入口
if __name__ == '__main__':

    # 创建一个 ConfigParser 对象
    config = configparser.ConfigParser()

    # 读取 ini 文件
    config.read('config.ini', encoding='utf-8')

    StudentID = config.get('Setting', 'StudentID')
    print("学号为:"+StudentID)
    Password = config.get('Setting', 'Password')
    print("密码为:"+Password)
    YYS = config.getint('Setting', 'YYS')
    print("运营商为:",YYS)

    print("""
    —                               _      _                           
  / _ \   _ __     ___   _ __      / \    | |_    ___    _ __ ___  
 | | | | | '_ \   / _ \ | '_ \    / _ \   | __|  / _ \  | '_ ` _ \ 
 | |_| | | |_) | |  __/ | | | |  / ___ \  | |_  | (_) | | | | | | |
  \___/  | .__/   \___| |_| |_| /_/   \_\  \__|  \___/  |_| |_| |_|
         |_|                                                       
    """)
    print("*** 软件由内师开放原子开源社团制作，免费供同学们使用，禁止倒卖！***")
    print("—————————— 软件来源：内师资源云（www.ziyuanyun.top）————————————")


    # 获取浏览器对象
    # 打开指定网站
    try:
        op = webdriver.EdgeOptions()
        op.add_experimental_option("detach", True)
        driver = webdriver.Edge(options=op)  # 实例化一个浏览器对象()
    except:
        driver.close()#关闭edge
        op = webdriver.ChromeOptions()
        op.add_experimental_option("detach", True)
        driver = webdriver.Chrome(options=op)# 实例化一个浏览器对象()

    driver.get('http://10.30.4.3/srun_portal_pc?ac_id=4&theme=pro')

    start_time = time.time()  # 记录开始时间
    timeout = 20 #最大时间
    element_id = "login-account"
    while True:
        try:
            # 像指定输入框输入数据
            driver.find_element(By.ID, "username").send_keys("")
            driver.find_element(By.ID, "password").send_keys("")
            # 像指定输入框输入数据
            driver.find_element(By.ID, "username").send_keys(StudentID)
            driver.find_element(By.ID, "password").send_keys(Password)
            # 获取复选框
            elem = driver.find_element(By.ID, "domain")
            # 点击复选框
            Select(elem).select_by_index(int(YYS))
            # 尝试找到元素并点击
            element = driver.find_element(By.ID, element_id)
            element.click()
            print("成功:找到提交按钮，跳转页面......")
            time.sleep(2)
            # 获取当前页面的URL
            current_url = driver.current_url
            if ("srun_portal_success" in current_url):
                print("成功：校园网连接完成，即将结束程序......")
                # 点击成功，跳出循环
                break
        except Exception:
            print("程序似乎发生了些小错误......")
            # 如果找不到元素，打印消息并等待两秒
            # print(f"未找到ID为'{element_id}'的元素，正在等待2秒后重试...")
            print("错误:未找到提交按钮，2s后将再次尝试......")
            time.sleep(2)
            # 检查是否超过了超时时间
            if time.time() - start_time > timeout:
                print(f"超时：在{timeout}秒内未能找到并点击提交按钮的元素，程序即将退出。")
                break  # 超出超时时间，跳出循环

    # 关闭浏览器和cmd
    driver.close()
